Guía de Solución de Problemas - Servidor MCP Selenium WebDriver.md•8.65 kB
# Guía de Solución de Problemas - Servidor MCP Selenium WebDriver
## Problemas Comunes y Soluciones
### 1. Error: "user data directory is already in use"
**Problema:** Chrome no puede iniciar porque el directorio de datos de usuario está en uso.
**Soluciones:**
#### Opción A: Usar modo incógnito (Recomendado)
```python
# En las opciones del navegador
options = {
"incognito": True,
"headless": False
}
```
#### Opción B: Limpiar directorios temporales
```cmd
for /d %i in ("%TEMP%\chrome_profile_*") do rmdir /s /q "%i"
```
#### Opción C: Usar undetected-chromedriver
```python
# En la configuración de evasión de detección
detection_evasion = {
"use_undetected_chrome": True
}
```
### 2. Error: "Chrome binary not found"
**Problema:** El sistema no puede encontrar el ejecutable de Chrome.
**Soluciones:**
#### Para Windows:
1. **Descargar e instalar Chrome:** Asegúrate de tener Google Chrome instalado en tu sistema. Puedes descargarlo desde el sitio web oficial: [https://www.google.com/chrome/](https://www.google.com/chrome/)
2. **Verificar la ruta de instalación:** Por defecto, Chrome se instala en:
- `C:\Program Files\Google\Chrome\Application\chrome.exe` (64-bit)
- `C:\Program Files (x86)\Google\Chrome\Application\chrome.exe` (32-bit)
3. **Asegurarse de que ChromeDriver sea compatible:** `webdriver-manager` debería descargar automáticamente la versión correcta de ChromeDriver. Si tienes problemas, puedes verificar la versión de tu Chrome y descargar manualmente el ChromeDriver compatible desde [https://chromedriver.chromium.org/downloads](https://chromedriver.chromium.org/downloads) y colocarlo en una ubicación accesible por el sistema (por ejemplo, en el PATH o en el mismo directorio que tu script Python).
#### Verificar instalación:
Para verificar si Chrome está en tu PATH o si puedes acceder a él desde la línea de comandos, abre `cmd` o PowerShell y ejecuta:
```cmd
where chrome
```
Esto debería mostrar la ruta al ejecutable de Chrome si está correctamente configurado.
### 3. Error: "Firefox binary not found"
**Problema:** El sistema no puede encontrar el ejecutable de Firefox.
**Soluciones:**
#### Para Windows:
1. **Descargar e instalar Firefox:** Asegúrate de tener Mozilla Firefox instalado en tu sistema. Puedes descargarlo desde el sitio web oficial: [https://www.mozilla.org/firefox/](https://www.mozilla.org/firefox/)
2. **Verificar la ruta de instalación:** Por defecto, Firefox se instala en:
- `C:\Program Files\Mozilla Firefox\firefox.exe` (64-bit)
- `C:\Program Files (x86)\Mozilla Firefox\firefox.exe` (32-bit)
3. **Asegurarse de que GeckoDriver sea compatible:** `webdriver-manager` debería descargar automáticamente la versión correcta de GeckoDriver. Si tienes problemas, puedes verificar la versión de tu Firefox y descargar manualmente el GeckoDriver compatible desde [https://github.com/mozilla/geckodriver/releases](https://github.com/mozilla/geckodriver/releases) y colocarlo en una ubicación accesible por el sistema (por ejemplo, en el PATH o en el mismo directorio que tu script Python).
#### Verificar instalación:
Para verificar si Firefox está en tu PATH o si puedes acceder a él desde la línea de comandos, abre `cmd` o PowerShell y ejecuta:
```cmd
where firefox
```
Esto debería mostrar la ruta al ejecutable de Firefox si está correctamente configurado.
### 4. Problemas de Permisos
**Problema:** El servidor no tiene permisos para ejecutar los navegadores o acceder a ciertos directorios.
**Soluciones:**
#### Verificar permisos:
En Windows, los problemas de permisos suelen estar relacionados con la ejecución de scripts o el acceso a archivos en directorios protegidos (como `Program Files`).
1. **Ejecutar como Administrador:** Intenta ejecutar tu script o la aplicación que inicia el servidor MCP como Administrador. Haz clic derecho en el archivo `.py` o en el acceso directo de tu terminal (CMD/PowerShell) y selecciona "Ejecutar como administrador".
2. **Verificar permisos de carpeta:** Asegúrate de que la cuenta de usuario que ejecuta el script tenga permisos de lectura y escritura en:
- El directorio donde se encuentra tu proyecto MCP.
- Los directorios de instalación de Chrome y Firefox.
- El directorio `temp` de tu usuario (`%TEMP%`).
Puedes verificar y modificar los permisos de una carpeta haciendo clic derecho sobre ella, seleccionando "Propiedades", luego la pestaña "Seguridad".
#### Agregar argumentos de seguridad:
Los argumentos de seguridad para Chrome y Firefox son generalmente los mismos en Windows que en Linux, ya que son argumentos de línea de comandos del navegador, no del sistema operativo.
```python
options = {
"no_sandbox": True,
"disable_dev_shm_usage": True,
"disable_gpu": True
}
```
### 5. Problemas de WebDriver
**Problema:** Los drivers de Selenium no están actualizados o son incompatibles.
**Soluciones:**
#### Actualizar webdriver-manager:
```bash
pip install --upgrade webdriver-manager
```
#### Forzar descarga de drivers:
```python
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager
# Esto forzará la descarga de la última versión
ChromeDriverManager().install()
GeckoDriverManager().install()
```
### 6. Modo Stealth No Funciona
**Problema:** Las configuraciones stealth no evitan la detección.
**Soluciones:**
#### Usar undetected-chromedriver:
```bash
pip install undetected-chromedriver
```
#### Configuración stealth completa:
```python
detection_evasion = {
"use_undetected_chrome": True,
"randomize_user_agent": True,
"randomize_viewport": True,
"disable_blink_features": True,
"exclude_switches": ["enable-automation"],
"add_experimental_options": {
"useAutomationExtension": False,
"excludeSwitches": ["enable-automation"]
}
}
```
### 7. Problemas de Red/Proxy
**Problema:** El navegador no puede conectarse a través de proxy.
**Soluciones:**
#### Configuración de proxy:
```python
proxy_config = {
"http": "http://proxy.example.com:8080",
"https": "https://proxy.example.com:8080",
"socks": "socks5://proxy.example.com:1080"
}
```
#### Verificar conectividad:
```bash
curl -x http://proxy.example.com:8080 http://httpbin.org/ip
```
## Configuraciones Recomendadas
### Para Desarrollo Local
```python
options = {
"headless": False,
"incognito": True,
"no_sandbox": True,
"disable_dev_shm_usage": True
}
detection_evasion = {
"use_undetected_chrome": False,
"randomize_user_agent": True,
"randomize_viewport": True
}
```
### Para Producción/Servidor
```python
options = {
"headless": True,
"incognito": True,
"no_sandbox": True,
"disable_dev_shm_usage": True,
"disable_gpu": True
}
detection_evasion = {
"use_undetected_chrome": True,
"randomize_user_agent": True,
"randomize_viewport": True,
"disable_blink_features": True
}
```
### Para Evasión Máxima
```python
options = {
"headless": False,
"incognito": True,
"no_sandbox": True,
"disable_dev_shm_usage": True,
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
detection_evasion = {
"use_undetected_chrome": True,
"randomize_user_agent": True,
"randomize_viewport": True,
"disable_blink_features": True,
"exclude_switches": ["enable-automation", "enable-blink-features"],
"add_experimental_options": {
"useAutomationExtension": False,
"excludeSwitches": ["enable-automation"]
}
}
```
## Logs y Depuración
### Habilitar logs detallados:
```python
import logging
logging.basicConfig(level=logging.DEBUG)
```
### Verificar estado del servidor:
```cmd
python test_server.py
```
### Monitorear procesos de Chrome:
```cmd
tasklist | findstr chrome.exe
```
### Limpiar procesos colgados:
```cmd
taskkill /IM chrome.exe /F
taskkill /IM firefox.exe /F
```
## Contacto y Soporte
Si los problemas persisten después de seguir esta guía:
1. Verificar que todas las dependencias están instaladas
2. Revisar los logs del servidor para errores específicos
3. Probar con configuraciones mínimas primero
4. Verificar compatibilidad de versiones entre navegadores y drivers
## Notas Importantes
- El error de "user data directory is already in use" es común en entornos de desarrollo
- Usar modo incógnito es la solución más efectiva para la mayoría de casos
- undetected-chromedriver es la mejor opción para evasión de detección
- Siempre limpiar sesiones y directorios temporales entre ejecuciones